package com.ztr.test;

import java.io.IOException;
import java.nio.file.*;  
  
public class FolderWatcher {  
  
    public static void main(String[] args) throws IOException, InterruptedException {  
        // 指定要监听的目录  
        Path directoryToWatch = Paths.get("D:\\1");  
  
        // 获取WatchService  
        WatchService watchService = FileSystems.getDefault().newWatchService();  
  
        // 注册要监听的事件类型，这里是ENTRY_CREATE，即创建新条目  
        directoryToWatch.register(watchService, StandardWatchEventKinds.ENTRY_CREATE);  
  
        // 无限循环，等待事件发生  
        while (true) {  
            // 获取下一个事件  
            WatchKey key = watchService.take();  
  
            // 遍历事件  
            for (WatchEvent<?> event : key.pollEvents()) {  
                // 上下文是目录条目  
                WatchEvent.Kind<?> kind = event.kind();  
  
                @SuppressWarnings("unchecked")  
                WatchEvent<Path> ev = (WatchEvent<Path>) event;  
                Path fileName = ev.context();  
  
                // 如果是ENTRY_CREATE事件，并且是一个目录  
                if (kind == StandardWatchEventKinds.ENTRY_CREATE && Files.isDirectory(directoryToWatch.resolve(fileName))) {  
                    System.out.println("新的文件夹被创建: " + fileName);  
                }  
            }  
  
            // 重置key，以便接收下一组事件  
            boolean valid = key.reset();  
            if (!valid) {  
                break;  
            }  
        }  
    }  
}